#!/bin/bash

# 检查是否安装了 ipmitool
if ! command -v ipmitool &>/dev/null; then
    echo "ipmitool 未安装，正在自动安装..."
    sudo apt-get update && sudo apt-get install ipmitool -y
    if [ $? -ne 0 ]; then
        echo "ipmitool 安装失败，请手动检查。"
        exit 1
    fi
    echo "ipmitool 安装成功。"
fi



# 获取业务 IP 地址（排除回环地址 127.0.0.1）
BUSINESS_IP=$(ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v '127.0.0.1' | head -n 1)

if [ -z "$BUSINESS_IP" ]; then
    echo "未能从 ip a 中获取业务 IP，请检查网络配置。"
    exit 1
fi

# 提取业务 IP 的最后两位
IFS='.' read -r -a IP_PARTS <<<"$BUSINESS_IP"
LAST_TWO="${IP_PARTS[2]}.${IP_PARTS[3]}"

# 设置静态 IP 参数，前两位固定
STATIC_IP="172.16.$LAST_TWO"
NETMASK="255.255.0.0"
GATEWAY="172.16.0.1"

# 输出业务 IP 和设置的静态 IP
echo "业务 IP 地址：$BUSINESS_IP"
echo "设置的静态 IP 地址：$STATIC_IP"
echo "子网掩码：$NETMASK"
echo "默认网关：$GATEWAY"

#重置BMC设置
sudo ipmitool raw 0x32 0x66
#等待 60 秒后开始配置
echo "等待 60 秒后开始配置"
sleep 60


# 配置 8 号口
echo "配置 8 号口为静态 IP..."
sudo ipmitool lan set 8 ipsrc static
sudo ipmitool lan set 8 ipaddr $STATIC_IP
sudo ipmitool lan set 8 netmask $NETMASK
sudo ipmitool lan set 8 defgw ipaddr $GATEWAY

# 检查 8 号口配置是否成功
echo "检查 8 号口配置..."
sudo ipmitool lan print 8

# 配置 1 号口
echo "配置 1 号口为静态 IP..."
sudo ipmitool lan set 1 ipsrc static
sudo ipmitool lan set 1 ipaddr $STATIC_IP
sudo ipmitool lan set 1 netmask $NETMASK
sudo ipmitool lan set 1 defgw ipaddr $GATEWAY

# 检查 1 号口配置是否成功
echo "检查 1 号口配置..."
sudo ipmitool lan print 1

echo "配置完成！"

# 用户密码
NEW_PASS="ht-123qwe.."

# 循环检查并修改用户 1 到用户 5
for USER_ID in {1..5}
do
    echo "尝试修改用户 $USER_ID..."

    # 检查用户是否存在
    if ipmitool user list 1 | grep -q "$USER_ID"; then
        echo "用户 $USER_ID 存在，正在修改用户名和密码..."

        # 修改用户名为 admin
        ipmitool user set name $USER_ID admin
        if [ $? -eq 0 ]; then
            echo "用户 $USER_ID 用户名修改为 admin 成功！"
        else
            echo "用户 $USER_ID 用户名修改失败。"
            continue
        fi

        # 修改密码
        ipmitool user set password $USER_ID "$NEW_PASS"
        if [ $? -eq 0 ]; then
            echo "用户 $USER_ID 密码修改成功！"
            break  # 修改成功，退出循环
        else
            echo "修改用户 $USER_ID 密码失败，尝试下一个用户..."
        fi
    else
        echo "用户 $USER_ID 不存在，跳过此用户..."
    fi
done

# 如果所有用户修改都失败，提示错误
if [ $USER_ID -eq 5 ]; then
    echo "所有用户（1-5）修改失败，请检查 BMC 配置和权限。"
fi